package com.shengsiyuan.netty.secondexample;

import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;

import java.util.UUID;

/**
 * 我们自己的处理器
 * SimpleChannelInboundHandler<String> 中的类型代表传输的数据。
 *
 * @author 荀彧 2021/1/5
 */

public class MyServerHandler extends SimpleChannelInboundHandler<String> {

    @Override
    protected void channelRead0(ChannelHandlerContext ctx, String msg) throws Exception {
        System.out.println(ctx.channel().remoteAddress() + "," + msg);
        // writeAndFlush = write + flush
        ctx.channel().writeAndFlush("from server" + UUID.randomUUID());
    }

    /**
     * 出现异常情况下的处理,出现异常就把通道关闭。
     * @param ctx
     * @param cause
     * @throws Exception
     */
    @Override
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
        cause.printStackTrace();
        ctx.close();
    }
}

